home *** CD-ROM | disk | FTP | other *** search
/ Kompuutteri Kaikille K-CD 2002 #1 / K-CD_2002-01.iso / Delphi / INSTALL / program files / Borland / Delphi6 / Demos / ConvertIt / ConvertItUnit.pas < prev    next >
Pascal/Delphi Source File  |  2001-05-22  |  3KB  |  115 lines

  1. unit ConvertItUnit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls, ComCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     ConvTypes: TListBox;
  12.     ConvValue: TEdit;
  13.     ConvResults: TListBox;
  14.     ConvValueIncDec: TUpDown;
  15.     ConvFamilies: TTabControl;
  16.     StatusBar1: TStatusBar;
  17.     procedure FormShow(Sender: TObject);
  18.     procedure ConvTypesClick(Sender: TObject);
  19.     procedure ConvValueChange(Sender: TObject);
  20.     procedure ConvFamiliesChange(Sender: TObject);
  21.   private
  22.     { Private declarations }
  23.   public
  24.     { Public declarations }
  25.   end;
  26.  
  27. var
  28.   Form1: TForm1;
  29.  
  30. implementation
  31.  
  32. {$R *.dfm}
  33.  
  34. uses
  35.   ConvUtils, StdConvs, EuroConv, StrUtils;
  36.  
  37. procedure TForm1.FormShow(Sender: TObject);
  38. var
  39.   LFamilies: TConvFamilyArray;
  40.   I: Integer;
  41.   LStrings: TStringList;
  42. begin
  43.   ConvFamilies.Tabs.Clear;
  44.   LStrings := TStringList.Create;
  45.   try
  46.     GetConvFamilies(LFamilies);
  47.     for I := 0 to Length(LFamilies) - 1 do
  48.       LStrings.AddObject(ConvFamilyToDescription(LFamilies[I]), TObject(LFamilies[I]));
  49.     LStrings.Sort;
  50.     ConvFamilies.Tabs.Assign(LStrings);
  51.     ConvFamiliesChange(Sender);
  52.   finally
  53.     LStrings.Free;
  54.   end;
  55. end;
  56.  
  57. procedure TForm1.ConvFamiliesChange(Sender: TObject);
  58. var
  59.   LFamily: TConvFamily;
  60.   LTypes: TConvTypeArray;
  61.   I: Integer;
  62. begin
  63.   LFamily := TConvFamily(ConvFamilies.Tabs.Objects[ConvFamilies.TabIndex]);
  64.   with ConvTypes, Items do
  65.   begin
  66.     BeginUpdate;
  67.     Clear;
  68.     GetConvTypes(LFamily, LTypes);
  69.     for I := 0 to Length(LTypes) - 1 do
  70.       AddObject(ConvTypeToDescription(LTypes[I]), TObject(LTypes[I]));
  71.     ItemIndex := 0;
  72.     EndUpdate;
  73.   end;
  74.   ConvTypesClick(Sender);
  75. end;
  76.  
  77. procedure TForm1.ConvTypesClick(Sender: TObject);
  78. begin
  79.   ConvValueChange(Sender);
  80. end;
  81.  
  82. procedure TForm1.ConvValueChange(Sender: TObject);
  83. var
  84.   LValue: Double;
  85.   LBaseType, LTestType: TConvType;
  86.   I: Integer;
  87. begin
  88.   with ConvResults, Items do
  89.   try
  90.     BeginUpdate;
  91.     Clear;
  92.     try
  93.       LValue := StrToFloatDef(ConvValue.Text, 0);
  94.       if ConvTypes.ItemIndex <> -1 then
  95.       begin
  96.         LBaseType := TConvType(ConvTypes.Items.Objects[ConvTypes.ItemIndex]);
  97.         for I := 0 to ConvTypes.Items.Count - 1 do
  98.         begin
  99.           LTestType := TConvType(ConvTypes.Items.Objects[I]);
  100.           Add(Format('%n %s', [Convert(LValue, LBaseType, LTestType),
  101.                                ConvTypeToDescription(LTestType)]));
  102.         end;
  103.       end
  104.       else
  105.         Add('No base type');
  106.     except
  107.       Add('Cannot parse value');
  108.     end;
  109.   finally
  110.     EndUpdate;
  111.   end;
  112. end;
  113.  
  114. end.
  115.